package com.example.algorithm.huawei_rongyao_29;

import java.util.Scanner;
import java.util.ArrayList;

// 收件人列表
// 难度：简单
/**
 NowCoder每天要给许多客户写电子邮件。正如你所知，如果一封邮件中包含多个收件人，收件人姓名之间会用一个逗号和空格隔开；如果收件人姓名也包含空格或逗号，则姓名需要用双引号包含。
 现在给你一组收件人姓名，请你帮他生成相应的收件人列表。

 输入描述:
 输入包含多组数据。
 每组数据的第一行是一个整数n (1≤n≤128)，表示后面有n个姓名。
 紧接着n行，每一行包含一个收件人的姓名。姓名长度不超过16个字符。

 输出描述:
 对应每一组输入，输出一行收件人列表。

 输入
 3
 Joe
 Quan, William
 Letendre,Bruce
 2
 Leon
 Kewell

 输出
 Joe, "Quan, William", "Letendre,Bruce"
 Leon, Kewell
 */
public class Q14_RecipientList {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 这个while循环保证了：
        // 第一个输入的是一个数字n
        // 接下来的n行的数据都装到names
        // 并且由于println是在while里面的，所以效果是输入一组就打印一次。
        while (scanner.hasNextLine()) {
            // 获取一组的行数
            int n = Integer.parseInt(scanner.nextLine());
            ArrayList<String> names = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                names.add(scanner.nextLine());
            }
            System.out.println(generateRecipientList(names));
        }

        scanner.close();
    }

    public static String generateRecipientList(ArrayList<String> names) {
        //最终用这个拼接成一个完整的字符串
        StringBuilder recipientList = new StringBuilder();

        // ArrayList是size
        for (int i = 0; i < names.size(); i++) {
            String name = names.get(i);
            if (name.contains(",") || name.contains(" ")) {
                // 也就是对于ArrayList里面的单个元素检测，如果包含上面那两种字符，就把这个元素用左右双引号包裹起来
                recipientList.append("\"").append(name).append("\"");
            } else {
                recipientList.append(name);
            }
            // 这个是保证每个元素后面都会 被打上逗号和一个空格，除了最后一个元素不打外
            if (i < names.size() - 1) {
                recipientList.append(", ");
            }
        }

        // 最后再把StringBuilder转换成String
        return recipientList.toString();
    }
}

